昨天,我們終於打造出 ChatBot 的 API 鑰匙。
而今天的任務,是要幫它打開世界的大門:
讓它從封閉的實驗室,走向能與真實使用者互動的舞台。
從實驗室到舞台:建立臨時互動介面
我們先在 Colab + ngrok 環境中,用 Gradio 架起一個臨時的聊天窗口。
def chat_interface(message, history, user_id):
payload = {"query": message}
res = requests.post(ngrok_url, json=payload)
res.raise_for_status() # 檢查 HTTP 請求是否成功
data = res.json() # 解析 FastAPI 回傳的 JSON
chatbot_answer = data.get("answer", "抱歉,ChatBot 沒有回覆。")
# 使用 get 方法避免 key error
return chatbot_answer
# Gradio ChatInterface 期望 fn 函式回傳 ChatBot 的回覆字串
demo = gr.ChatInterface(fn=chat_interface,
title="🌐 尼泊爾旅遊規劃夥伴")
# 啟動 Gradio 介面
# share=True 會生成一個公開連結,方便測試
demo.launch(share=True)
流程示意:使用者輸入 → Gradio → FastAPI → 模型回覆

到這裡,ChatBot 終於能透過可視化的聊天框,與使用者即時對話、真實互動。
Colab 的限制:無法長期上線
Colab 是完美的試車場——快速、免費、方便連雲端。
但它有個天生缺陷:
一旦 Colab 斷線,虛擬機就被釋放 → ngrok 斷線 → Gradio 消失。
換句話說,我們的 ChatBot 雖能跑,但還不穩定、不能長期運作。
部署策略釐清:從試車場到展示場
接下來的任務,是讓 ChatBot 能「隨時被打開、隨時可體驗」。
要達成這件事,我們得處理關鍵環節:
一旦搞定,就能幫 ChatBot 裝上翅膀、建立跑道、調校導航系統。
Streamlit:讓作品真正「常駐上線」
在這階段,我們選擇了熟悉的 Streamlit 作為展示平台,結合它前端互動介面以及自建伺服器的優點,我們將 Colab 筆記本中的核心程式碼,打包成單一 app.py 檔案,並使用 Streamlit 元件建立互動式聊天室介面。
相關操作可以參考 Day 18:Mario Dashboard —— 用 Streamlit 玩轉互動魔法鏡 ;不同的是,我們這次是在 Colab 試車場試跑。
小技巧:在streamlit部署時,記得點進「Advanced Setting」,將授權憑證獨立的保存在「Secrets」。例如:
GEMINI_API_KEY = " 認證金鑰 "
成果呈現
ChatBot 成品出來的那刻,真的是滿滿的成就感!

隨著 ChatBot 移到 Streamlit 展示場,訪客可以隨時試駕。
📓 小結:
今天的挑戰,標誌著我們從「開發測試」邁向「實際上線」的重要轉折。
ChatBot 不再只是藏在 Colab 裡的原型,而是能被世界看見的服務雛形。
這是他的第一次正式亮相,達成一個小小的里程碑。